Redo csd window-dragging
authorMatthias Clasen <mclasen@redhat.com>
Mon, 13 Jan 2014 02:01:43 +0000 (21:01 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 13 Jan 2014 03:25:19 +0000 (22:25 -0500)
commit2232430a5afca69cf9403af851ed4fe55558da79
tree5e524a5d256eaf87ea2509df6c034a56ab7ced71
parentf940a60fd514dacee9194f142e05bedd651bcd7e
Redo csd window-dragging

The window-dragging code had a number of issues: The code was
starting a drag on every button press, never bothering to cancel
them. This leads to the odd hand cursor occurring between the two
clicks to maximize. We relied on GDK's multi-click detection, which
gives us triple-clicks when we really want sequences of double-clicks.
Lastly, we didn't propery restrict double-click handling to the primary
button, so e.g. if you had a window on an empty workspace, double-right
click on the titlebar would maximize it, which is not intended.

This commit solves all three problem by a doing our own double-click
detection, and only starting a drag when the pointer goes out of
'double-click range'. We change the way dragging is implemented for
menubars and toolbars to just letting events bubble up, so they
get the same behaviour as the titlebar. To make this work, we
have to select for pointer motion events in a few more places.
gtk/gtkmenushell.c
gtk/gtktoolbar.c
gtk/gtkwindow.c
gtk/gtkwindowprivate.h